package com.evildog.workspace.life.application.convert;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.evildog.workspace.common.result.PagedResult;
import com.evildog.workspace.life.application.bo.PhotoTagBO;
import com.evildog.workspace.life.application.bo.PhotoTagListBO;
import com.evildog.workspace.life.application.bo.PhotoTagPageBO;
import com.evildog.workspace.life.application.dto.PhotoTagDTO;
import com.evildog.workspace.life.application.dto.PhotoTagListDTO;
import com.evildog.workspace.life.application.dto.PhotoTagPageDTO;
import com.evildog.workspace.life.application.entity.PhotoTag;
import com.evildog.workspace.life.application.entity.PhotoTagListDO;
import com.evildog.workspace.life.application.entity.PhotoTagPageDO;
import com.evildog.workspace.life.application.model.PhotoTagListParam;
import com.evildog.workspace.life.application.model.PhotoTagPageParam;
import com.evildog.workspace.life.application.model.PhotoTagParam;
import com.evildog.workspace.life.application.vo.PhotoTagListVO;
import com.evildog.workspace.life.application.vo.PhotoTagPageVO;
import com.evildog.workspace.life.application.vo.PhotoTagVO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.Mappings;
import org.mapstruct.factory.Mappers;

import java.util.List;

@Mapper
public interface PhotoTagConvert {

    PhotoTagConvert INSTANCE = Mappers.getMapper(PhotoTagConvert.class);

    PhotoTagPageDTO convert(PhotoTagPageParam photoTagPageParam);

    PhotoTagListDTO convert(PhotoTagListParam photoTagListParam);

    PhotoTagDTO convert(PhotoTagParam photoTagParam);

    @Mapping(target = "isDeleted", ignore = true)
    PhotoTag convert(PhotoTagDTO photoTagDTO);

    PhotoTagPageDO convert(PhotoTagPageDTO photoTagPageDTO);

    PhotoTagVO convert(PhotoTagBO photoTagBO);

    PhotoTagBO convert(PhotoTag photoTag);

    List<PhotoTagListBO> convert(List<PhotoTagListDO> photoTagList);

    List<PhotoTagListVO> convertVoList(List<PhotoTagListBO> photoTagListBO);

    @Mappings({})
    PagedResult<PhotoTagPageBO> convert(IPage<PhotoTagPageDO> page);

    PagedResult<PhotoTagPageVO> convert(PagedResult<PhotoTagPageBO> page);


}